var uid = 0;
export default class Dep {
  constructor() { 
    // console.log('我是Dep的构造器')   
    this.id = uid++
    // 用数组存储自己的订阅者，subs是subscribes订阅者的意思
    this.subs = []
  }
  //添加订阅
  addSubs (sub) {
   this.subs.push(sub)
  }
  // 添加/收集依赖 (Watcher)
  depend () {
    // Dep.target就是订阅者，在 Watcher中定义了
    // Dep.target就是一个我们自己指定的全局的位置，你用window.target也是一样的。只要是全局唯一，没有歧义
    if (Dep.target) {
      this.addSubs(Dep.target)
    }
  }
  //触发依赖(Watcher)更新 ， 通知订阅者循环调用的方法，让订阅者们全部执行，这样达到更新的目的
  notify () {
    console.log('我是Dep的notify方法')
    // 浅克隆一份
    const subs = this.subs.slice()
    // 遍历
    for (let i = 0, l = subs.length; i < l; i++) {
      subs[i].update()    
    }
  }

}